package com.xbongbong.saas.service;

import com.xbongbong.paas.pojo.vo.CategorySimpleListVO;
import com.xbongbong.paas.pojo.vo.DepartmentSimpleListVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.productcategory.pojo.dto.ProductCategoryAddDTO;
import com.xbongbong.pro.productcategory.pojo.dto.ProductCategoryDeleteDTO;
import com.xbongbong.pro.productcategory.pojo.dto.ProductCategoryListDTO;
import com.xbongbong.pro.productcategory.pojo.dto.ProductCategoryPropertyDTO;
import com.xbongbong.pro.productcategory.pojo.dto.ProductCategorySortDTO;
import com.xbongbong.pro.productcategory.pojo.dto.ProductCategoryUpdateDTO;
import com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryAddVO;
import com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryDeleteVO;
import com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryListVO;
import com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryPropertyVO;
import com.xbongbong.pro.productcategory.pojo.vo.ProductCategorySortVO;
import com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryUpdateVO;
import com.xbongbong.saas.domain.entity.ProductCategoryEntity;

import java.util.List;

/**
 * @author 吴峰
 * @version v1.0
 * @date 2019/3/22 10:19
 * @since v1.0
 */
public interface ProductCategoryService {

    /**
     * 获取列表
     * @author 吴峰
     * @date 2019/3/22 10:26
     * @param productCategoryListDTO
     * @return com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryListVO
     * @throws XbbException 业务异常
     */
    ProductCategoryListVO list(ProductCategoryListDTO productCategoryListDTO) throws XbbException;
    /**
     * 根据表单获取产品分类列表
     * @author weiming
     * @date 2020/5/26 19:33
     * @param corpid
     * @return com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryListVO
     * @throws XbbException 业务异常
     */
    CategorySimpleListVO formProductCategoryList(String corpid) throws XbbException;

    /**
     * 排序
     * @author 吴峰
     * @date 2019/3/22 15:03
     * @param productCategorySortDTO
     * @return com.xbongbong.pro.productcategory.pojo.vo.ProductCategorySortVO
     * @throws XbbException 业务异常
     */
    ProductCategorySortVO sort(ProductCategorySortDTO productCategorySortDTO) throws XbbException;
    /**
     * 排序
     * @author 吴峰
     * @date 2019/3/22 15:03
     * @param productCategoryUpdateDTO
     * @return com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryUpdateVO
     * @throws XbbException 业务异常
     */
    ProductCategoryUpdateVO update(ProductCategoryUpdateDTO productCategoryUpdateDTO) throws XbbException;
    /**
     * 新建
     * @author 吴峰
     * @date 2019/3/22 15:03
     * @param productCategoryAddDTO
     * @return com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryAddVO
     * @throws XbbException 业务异常
     */
    ProductCategoryAddVO add(ProductCategoryAddDTO productCategoryAddDTO) throws XbbException;
    /**
     * 排序
     * @author 吴峰
     * @date 2019/3/22 15:03
     * @param productCategoryDeleteDTO
     * @return com.xbongbong.pro.productcategory.pojo.vo.ProductCategoryDeleteVO
     * @throws XbbException 业务异常
     */
    ProductCategoryDeleteVO delete(ProductCategoryDeleteDTO productCategoryDeleteDTO) throws XbbException;
    /**
     * 获取某个分类的所有子分类的id列表
     *
     * @param corpid       公司id
     * @param categoryId 分类id
     * @author 吴峰
     * @date 2019/4/9 21:51
     * @throws XbbException
     * @return
     */
    List<ProductCategoryEntity> getSubCategoryIdList(String corpid, Long categoryId) throws XbbException;


    /**
     * 获取产品分类属性
     *
     * @param productCategoryPropertyDTO 入参
     * @return ProductCategoryPropertyVO
     * @throws XbbException 异常
     */
    ProductCategoryPropertyVO getCategoryProperty(ProductCategoryPropertyDTO productCategoryPropertyDTO) throws XbbException;

    /**
     * 保存产品分类属性设置
     *
     * @param productCategoryPropertyDTO 入参
     * @return ProductCategoryPropertyVO 异常
     */
    ProductCategoryPropertyVO saveCategoryProperty(ProductCategoryPropertyDTO productCategoryPropertyDTO) throws XbbException;

    /**
     * 前端要这样的数据格式
     * @param productCategoryListDTO
     * @return
     * @throws XbbException
     */
    DepartmentSimpleListVO purchaseGoodsList(ProductCategoryListDTO productCategoryListDTO) throws XbbException;
}
